package chapter02;

public class Java04_Operator_03 {
    public static void main(String[] args) {
        // TODO 逻辑运算符
        // 用于表述多个条件表达式之间的关系
        // TODO 基本语法接口：变量 = (条件表达式1) 逻辑运算符 (条件表达式2);
        // 结果类型仍然为布尔类型，因为条件表达式的结果类型为布尔类型(boolean,boolean)=>boolean
        /*
        分为四种情况：
            true true => ?
            true false => ?
            false false => ?
            false true => ?
         */

        // TODO 与：&
        // 两个条件表达式计算结果都为true时结果为true
        int i = 10;
        boolean result = (i > 5) & (i > 20);
        System.out.println(result);

        // TODO 或：|
        // 两个条件表达式任一结果为true时结果为true
        int i1 = 10;
        boolean result1 = (i1 > 5) | (i1 < 20);
        System.out.println(result1);

        // TODO 与运算(短路与运算)：&&
        // 根据第一个表达式的结果来判断是否执行第二个表达式
        // 如果第一个表达式结果为false则无需执行第二个表达式
        int i2 = 10;
        int j2 = 20;
        boolean result2 = (i2 > 10) && (++j2 > 30);
        System.out.println(result2);
        System.out.println("j2 = "+j2);

        // TODO 或运算(短路或运算)：||
        // 根据第一个表达式的结果来判断是否执行第二个表达式
        // 如果第一个表达式结果为false则无需执行第二个表达式
        int i3 = 10;
        int j3 = 20;
        boolean result3 = (i3 == 10) || (++j3 > 30);
        System.out.println(result3);
        System.out.println("j3 = "+j3);

        // TODO 非运算(相反运算)：!
        /*
            true => false
            false => true
         */
        int i4 = 10;
        boolean result4 = i4 == 10;
        System.out.println(result4);
        System.out.println(!result4);
    }
}
